﻿/*------------------------------------------------------------------------

PRESERVECOMMON.HPP v3.1

Copyright 楊志賢 CxxlMan, 2012
All Rights Reserved

在 cxxlpreserve 專案中各模組間會用到的設定

------------------------------------------------------------------------*/

#if !defined(__PRESERVECOMMON_HPP_CxxlMan)
#define __PRESERVECOMMON_HPP_CxxlMan

#include "DLLDEF.HPP"

#if defined(_CXXLPRESERVE_DLLEXPORT)
#define CXXLPRESERVE_DLLEXPORT CXXL_DLLEXPORT
#else
#define CXXLPRESERVE_DLLEXPORT CXXL_DLLIMPORT
#endif


namespace CxxlMan
{

// cxxlPreserve 永存資料一個保留名稱
#define SETCOUNT L"SetCount"

// cxxlPreserve2 永存資料五個保留名稱
#define INTERFACEIDNAME L"__InterfaceID"
#define CLASSIDNAME L"__ClassID"
#define OBJIDNAME L"__ObjID"
#define GROUPNAME L"__Group"
#define SPIRITNAME L"__Spirit"

// 物件再生功能回報的結果
enum REGENERARETURN_TYPE
{
  Regenera_Success,               // 成功
  Regenera_Empty,                 // 儲存體是空的(無子節點也無內容)
  Regenera_NotPreserve2,          // 錯誤發生在不是 Preserve2 的永存資料
  Regenera_NotP2Smart_Ptr,        // 錯誤發生在一個再生 Preserve2 的子物件但和它配對要存放的是 PSmart_Ptr，不是 P2Smart_Ptr
  Regenera_NotMatchP2Smart_Ptr,   // 錯誤發生在一個再生 Preserve2 的子物件實作，和要存放的 P2Smart_Ptr 類別不搭配
  Regenera_NotSameP2Smart_Ptr,    // 錯誤發生在 Preserve 的子物件個數和 PSmart_Ptr 的個數不一樣
  Regenera_NotSamePSmart_PtrName, // 錯誤發生在 Preserve2 子物件的永存資料中的名稱，和配對要存放的 PSmart_Ptr 名稱不一樣
  Regenera_RestoreError,          // 錯誤發生在做永存資料的取回
  Regenera_NotRegistered,         // 在指定的 Group 中未找到元件的註冊資料
  Regenera_NotGetPreserve2,       // 無法載入提供元件的動態連結程式庫(DLL)，或無法從中取得元件
  Regenera_NoName                 // 指定的名稱在永存資料容器中不存在

};


}   /* namespace CxxlMan */
#endif
